23.07.05
오늘 한 일
- TIL GUIDELINE 작성
- Rust 공부 1,2장 및 3장 절반
TIL GUIDELINE
TIL 가이드라인을 작성했다.
빌드할 때 mdx로 변환되면서 에러가 생기는 경우의 수가 있어서, 가이드라인을 만들어보았다.
🤔 어떻게 하면 빌드 오류를 사전에 방지할 수 있을까?
두 가지 방법을 생각했다.
eslint
를 사용해서 빌드 전에 오류를 잡는다.Dogsounds-TIL
과TIL
를 합쳐서TIL
레포지토리에서pnpm build
를 직접해본다.
첫 번째 방법을 위해 eslint-plugin-mdx을 적용해보았지만, 내가 원하는 대로 동작하지 않았다. 닫는 태그가 없는 경우들을 잡아주지 않았다.
두 번째 방법은 직접 빌드해서 확인하는 것이기 때문에 확실한 방법이지만, 멤버들이 살짝 복잡하게 느껴질 수도 있다.
그래서 일단 킵해두고, 다른 방법이 있을지 더 고민해봐야겠다.
Rust 공부
오늘 처음 Rust 언어를 공부해보았다. 생소하지만 재밌었다. 원래는 3장까지 하기로 했지만, 생각보다 공식문서가 쉽게 적혀있어서 금방 끝났다. 그래서 1주차 분량을 4장
소유권
까지 하기로 정했다.
- 러스트에서 변수는 기본적으로 불변 (immutable)
- 변경 가능하도록 하려면 변수명 앞에 mut를 추가
- ::는 new가 String 타입의 연관 함수 (associated function) 임을 나타냄
- &는 코드의 여러 부분에서 데이터를 여러 번 메모리로 복사하지 않고 접근하기 위한 방법을 제공하는 참조자 (reference)
- 크레이트는 러스트 코드 파일들의 모음
- i32는 32비트 정수, u32는 32비트의 부호 없는 정수, i64는 64비트의 정수
- 기본적으로 숫자들을 i32로 생각
- trim 메서드는 \n 혹은 \r\n을 제거
// guessing_game/src/main.rs
use rand::Rng;
use std::cmp::Ordering;
use std::io;
fn main() {
println!("Guess the number!");
let secret_number = rand::thread_rng().gen_range(1..=100);
loop {
println!("Please input your guess.");
let mut guess = String::new();
io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");
println!("You guessed: {}", guess);
let guess: u32 = match guess.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
match guess.cmp(&secret_number) {
Ordering::Less => println!("Too small!"),
Ordering::Greater => println!("Too big!"),
Ordering::Equal => {
println!("You win!");
break;
}
}
}
}
내일 할 일
- 알고리즘 문제 풀이
- Rust 공식문서 3장 나머지 공부
- 모노레포 찍먹
- CS 스터디 오후 9시 30분